In many computer systems, one or more processors access a main memory for instructions and data. Typically, the main memory is not capable of supplying data and instructions to the processors at adequate speeds. To compensate for the speed deficiencies of main memory, caches are usually incorporated. Caches are small high-speed memories located between main memory and a processor, and that are updated to contain memory data that was recently requested by the processor. The processor can generally obtain a copy of memory data much more quickly from its cache than from the main memory.
In multiprocessor systems, multiple copies of a particular data item may reside within multiple caches at any given time. Because of this, a memory coherency protocol must be used to ensure that all processors within the system operate from the same, most recent, copy of the memory data. This type of protocol allows data to be shared among many devices for read-only purposes. Before a device can modify the data, it must gain exclusive access to the data. In this case, all other cached copies of the data are marked as unusable, or “invalidated”. After a device gains exclusive access to data, the device may, but is not required to, modify the data. When a device relinquishes exclusive access rights, any updated copy of the data must be stored back to the main memory, or provided to another cache within the system.
Directory-based coherent memories use a memory coherency protocol that has both a Directory Store and a Main Store. The Main Store stores the data, often including both instructions and operands, which may be referenced by any of the processors within the system. The Directory Store stores information that indicates where the latest copy of the data resides within the system to ensure that every processor is operating from the most recent copy.
A difficulty in many directory-based coherent memories is that it is often difficult to initialize and/or test and diagnose the Directory Store within the directory-based coherent memory because, in many cases, there is no direct and/or efficient way to access the Directory Store. Therefore, what would be desirable is a system and method for efficiently testing and/or initializing a Directory Store in a directory-based coherent memory.